home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / ForCLI / 0Utils13.lha / 0Utils / Close.c < prev    next >
C/C++ Source or Header  |  1995-03-20  |  3KB  |  136 lines

  1.  
  2. /******************************************************************************
  3.  
  4.     MODULE
  5.     Close.c
  6.  
  7.     DESCRIPTION
  8.  
  9.  
  10.     NOTES
  11.     Kickstart 2.0+ required
  12.     compiles w/ SAS/C v6.51
  13.  
  14.     BUGS
  15.     none known
  16.  
  17.     TODO
  18.  
  19.     EXAMPLES
  20.     > set fh `Open Sys:S/Shell-startup`
  21.     > Readln $fh
  22.       alias xcopy "copy clone "
  23.     > Close $fh
  24.  
  25.     SEE ALSO
  26.  
  27.     INDEX
  28.  
  29.     HISTORY
  30.     21-02-95 b_noll created
  31.     21-02-95 b_noll added version/format-prefix/offset
  32.     20-03-95 b_noll added args diagnostics
  33.  
  34.     AUTHOR
  35.     Bernd Noll, Brunnenstrasse 55, D-67661 Kaiserslautern
  36.     b_noll@informatik.uni-kl.de
  37.  
  38. ******************************************************************************/
  39.  
  40. /**************************************
  41.         Includes
  42. **************************************/
  43.  
  44. #ifndef   EXEC_LIBRARIES_H
  45. # include <exec/libraries.h>
  46. #endif /* EXEC_LIBRARIES_H */
  47.  
  48. #ifndef   CLIB_EXEC_PROTOS_H
  49. # include <clib/exec_protos.h>
  50. #endif /* CLIB_EXEC_PROTOS_H */
  51.  
  52. #ifndef   DOS_DOS_H
  53. # include <dos/dos.h>
  54. #endif /* DOS_DOS_H */
  55.  
  56. #ifndef   CLIB_DOS_PROTOS_H
  57. # include <clib/dos_protos.h>
  58. #endif /* CLIB_DOS_PROTOS_H */
  59.  
  60. #include <proto/dos.h>
  61. #include <proto/exec.h>
  62.  
  63. /**************************************
  64.      Defines & Structures
  65. **************************************/
  66.  
  67. #ifndef ABSEXECBASE
  68. #define ABSEXECBASE ((struct ExecBase **)4L)
  69. #endif
  70.  
  71. struct _arg {
  72. /* ******************** USER FORMAT ******************** */
  73. #define FORMAT "FILEHANDLE/N/A"
  74.  
  75.     BPTR *filehandle;
  76.  
  77. /* ******************** USER FORMAT ******************** */
  78. }; /* struct _argv */
  79.  
  80. #define MAXPATHLEN 256
  81. #define MAXLINELEN 256
  82.  
  83. #define VERSIONPREFIX    "\0$VER: "
  84. #define VERSIONOFFSET    0
  85. #define FORMATPREFIX    "\0$ARG: "
  86. #define FORMATOFFSET    7
  87.  
  88. /**************************************
  89.         Implementation
  90. **************************************/
  91.  
  92. long _main (void)
  93. {
  94.     const char* version = VERSIONPREFIX "Close 1.1 " __AMIGADATE__  + VERSIONOFFSET;
  95.     long retval = RETURN_FAIL;
  96.     struct ExecBase*SysBase = *ABSEXECBASE;
  97.     struct Library* DOSBase;
  98.  
  99.     if (DOSBase = OpenLibrary (DOSNAME, 37)) {
  100.     struct _arg argv = { 0 };
  101.     APTR   args;
  102.     retval     = RETURN_ERROR;
  103.     if (args = (void*)ReadArgs(FORMATPREFIX FORMAT + FORMATOFFSET, (LONG*)&argv, NULL)) {
  104.  
  105. /* ******************** USER BODY ******************** */
  106.  
  107.         if (argv.filehandle && *argv.filehandle) {
  108.         if (Close (*argv.filehandle)) {
  109.             retval = RETURN_OK;
  110.         } else {
  111.             //PrintFault (IoErr(), GetArgStr());
  112.             retval = RETURN_ERROR;
  113.         } /* if */
  114.         } else {
  115.         SetIoErr(ERROR_BAD_NUMBER);
  116.         retval = RETURN_ERROR;
  117.         } /* if */
  118.  
  119. /* ******************** USER BODY ******************** */
  120.         FreeArgs (args);
  121.     } /* if */
  122.  
  123.     if (retval > RETURN_WARN)
  124.         PrintFault(IoErr(), "Close");
  125.  
  126.     CloseLibrary (DOSBase);
  127.     } /* if */
  128.     return (retval);
  129. } /* _main */
  130.  
  131. /******************************************************************************
  132. *****  END Close.c
  133. ******************************************************************************/
  134.  
  135.  
  136.